var TheGame = require('geoTheGame');
var Utils = require('geoUtils');
/**
 * 此脚本主要用于游戏主框架逻辑，
 */
cc.Class({
    extends: TheGame,

    properties: {
        bottomInfoPrefab:{
            default:null,
            type:cc.Prefab,
            tooltip:'底部信息栏预制体',
        },
        contentNode:{
            default:null,
            type:cc.Node,
            tooltip:'用于演示功能的总节点',
        },
        itemPickSFX:{
            default:null,
            type:cc.AudioClip,
            tooltip:'拾起物品的音效'
        },
        itemDropSFX:{
            default:null,
            type:cc.AudioClip,
            tooltip:'放下物品音效'
        },
        areaDropSFX:{
            default:null,
            type:cc.AudioClip,
            tooltip:'拖放到拖放区音效'
        },
    },

    // LIFE-CYCLE CALLBACKS:

    // onLoad () {},

    start () {
        if (this.contentNode != null && this.bottomInfoPrefab != null) {
            this._bottomInfo = cc.instantiate(this.bottomInfoPrefab).getComponent(cc.Label);
            this.contentNode.addChild(this._bottomInfo.node);
        }
    },
    /**
     * 游戏的逻辑从这个方法开始
     */
    startGame(){

    },
    /**
     * 
     * @param {event} e 拖放事件对象
     * @param {cc.Node} item 被拖放的节点对象
     * @param {cc.Node} area 接受拖放的节点对象
     * @param {cc.Touch} touch 拖放结束时的触摸对象
     */
    onItemDropInArea(e, item, area, touch){
        Utils.action.scale(area, 1.1, 1.1, 1, 0.3);
        // 播放音效
        this.gameMaster.audio.playSFX(this.areaDropSFX);
        // 获取触摸位置世界坐标
        var location = touch.getLocation();
        // 打印信息
        this.logInfo('拖放：' + '{' + item.name + '}->{' + area.name + '} at (' + location.x.toFixed(0) + ', ' + location.y.toFixed(0) + ')');
    },
    onItemEnterArea(e, item, area){
        Utils.action.flicker(area, 125, 3, 0.3);
    },
    onItemHoverInArea(e, item, area){
        // do nothing.
    },
    onItemExitArea(e, item, area){
        Utils.action.shake(area, 5, 3, 0.3);
    },
    /**
     * 
     * @param {event} e 
     * @param {cc.Node} item 被拖拽的节点
     * @param {cc.Vec2} location 当前触摸位置
     * @param {cc.Touch} touch 当前touch对象
     */
    onItemPickUp(e, item, location, touch){
        // 播放音效
        this.gameMaster.audio.playSFX(this.itemPickSFX);
        // 打印信息
        this._logItemLocation('拾起：', item, location);
    },
    /**
     * 
     * @param {event} e 
     * @param {cc.Node} item 被拖拽的节点
     * @param {cc.Vec2} location 当前触摸位置
     * @param {cc.Touch} touch 当前touch对象
     */
    onItemDrag(e, item, location, touch){
        // 打印信息
        this._logItemLocation('拖动：', item, location);
    },
    /**
     * 
     * @param {event} e 
     * @param {cc.Node} item 被拖拽的节点
     * @param {cc.Vec2} location 当前触摸位置
     * @param {cc.Touch} touch 当前touch对象
     */
    onItemDrop(e, item, location, touch){
        // 播放音效
        this.gameMaster.audio.playSFX(this.itemDropSFX);
        // 打印信息
        this._logItemLocation('放下：', item, location);
    },

    /**
     * 
     * @param {*} info 
     */
    logInfo(info){
        cc.log(info);
        // console.log(info);
        this._bottomInfo && (this._bottomInfo.string = info);
    },
    _logItemLocation(prefix, item, location){
        // 打印信息
        this.logInfo(prefix + '{' + item.name + '} at (' + location.x.toFixed(0) + ', ' + location.y.toFixed(0) + ')');
    }

    // update (dt) {},
});
